// C++ author 清晨与猫鱼
#include <iostream>     
#include <string>           // 引入字符串库
#include <memory>           // 引入内存管理库
#include "Realize.h"        // 引入实现文件

using namespace std;        // 引用标准空间

int main(const int argc, const char** argv)
{	
    
    // 获取形状工厂
    unique_ptr<AbstractFactory> shapeFactory(FactoryProducer::getFactory("ShapeFactory"));

    // 获取圆形
    unique_ptr<Shape> shape1(shapeFactory->getShape("Circle"));

    shape1->draw();     // 绘制

    // 获取正方形
    unique_ptr<Shape> shape2(shapeFactory->getShape("Square"));

    shape2->draw();      // 绘制

    // 获取长方形
    unique_ptr<Shape> shape3(shapeFactory->getShape("Rectangle"));

    shape3->draw();     // 绘制




    // 获取颜色工厂
    unique_ptr<AbstractFactory> colorFactory(FactoryProducer::getFactory("ColorFactory"));

    // 获取红色
    unique_ptr<Color> color1(colorFactory->getColor("Red"));

    color1->fill();     // 填充

    // 获取绿色
    unique_ptr<Color> color2(colorFactory->getColor("Green"));

    color2->fill();     // 填充

    // 获取蓝色
    unique_ptr<Color> color3(colorFactory->getColor("Blue"));

    color3->fill();     // 填充

}
